Français Virtuose
  • Tags:

    Dégâts biologiquesSoin biologique
  • Name:

    aLifeRay

  • Displayed name:

    Rayon de vie

  • Description:

    Un rayon d'énergie vitale vous relie à une créature, et la vie s'écoule le long de ce lien : vous pouvez la puiser en elle, ou lui céder la vôtre. Chaque PdV perdu par l'une des deux extrémités du rayon rend 1 PdV à l'autre.

  • Cast description:

    | PA: vAP.string | TdR: vCD.strings | | :---: | :---: | | **Flux: vFluxOrCost.string ➞ vFluxCost.string** | **Portée: vRange.string** | Sur un test de **vTest.string** réussi **RM vMR.string** [1d20]: Un rayon de vie vous relie à la cible. @if vDirection.value == 1 then [[La cible subit vDamage.string [vDamage.string] dégâts biologiques, et vous récupérez 1 PdV biologique par PdV qu'elle perd.]] else [[Vous subissez vDamage.string [vDamage.string] dégâts biologiques, et la cible récupère 1 PdV biologique par PdV que vous perdez.]] end Tous les 2 PdV soignés au-delà du maximum, la créature soignée gagne 1 Extra PdV. *La cible peut réagir à cette action avec sa réaction Résister pour en annuler les effets.*

  • Condition:

    assert(character.sFlux.current >= vFluxCost.value, [[Vous n'avez pas assez de Flux.]])
  • AP cost:

    3

  • Cooldown:

    0

  • Flux cost:

    apMod(vAP)*cdMod(vCD)*targetMod(1,0)*puncMod(0,1)*vRange*reacSave*cancelOnSave*effect(vDamage*65*1.5,60)
  • Variables:

    vRange = ListVariable([[vRange]], [[Portée]], {[[mediumMod]]}, {[[10 m]]})
    vTest = ListVariable([[vTest]], [[Test]], {[[character.sResilience]]}, {[[Résilience]]})
    vMR = StatVariable([[vMR]], [[vTest]])
    vDamage = NumberVariable([[vDamage]], [[Dés de dégâts]], [[1]], [[10]], [[1]])
    vDamage.valueDisplay.value = [[ self .. "d8" ]]
    vDirection = ListVariable([[vDirection]], [[Sens du rayon]], {[[1]], [[2]]}, {[[Drainer la cible]], [[Soigner la cible]]})
  • On used script:

    character.sFlux:changeCurrent(-vFluxCost.value)
    
  • On post script:

    if (success) then
        action.currentCD.value = vCD.value
    end
    
  • Type:

    1

  • Action effects:

    • Use case:

      (1*number(vDirection.value==1)+3*number(vDirection.value==2))*number(vLifeDrained.value>0)

    • Name:

      Rayon de vie

    • Description:

      Indiquez les PdV réellement perdus : l'autre extrémité du rayon récupère autant de PdV biologiques, et gagne 1 Extra PdV par tranche de 2 PdV soignés au-delà de son maximum.

    • Script:

      lifeRayHeal = {{vLifeDrained.value}}
      lifeRayMissing = math.max(character.sMaxHP.current - character.sHP.current, 0)
      if (math.min(lifeRayHeal, lifeRayMissing) > 0) then
          character:damage(-math.min(lifeRayHeal, lifeRayMissing), 1, [[Biologic]])
      end
      lifeRayExtra = math.floor(math.max(lifeRayHeal - lifeRayMissing, 0) / 2)
      if (lifeRayExtra > 0) then
          character.sExtraHP:changeCurrent(lifeRayExtra)
      end
    • Variables:

      vLifeDrained = NumberVariable([[vLifeDrained]], [[PdV perdus]], [[0]], [[vDamage.value*8]], [[1]])